﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.ServiceModel.Channels;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.EventoWs;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.ClienteWs;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.EstabelecimentoWS;

namespace PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.GUI
{
    public partial class ListaEventos : System.Web.UI.Page
    {

        ObjetoEvento[] listaEvento;
        PubClub_Evento_WS webServiceEvento = new PubClub_Evento_WS();
        ObjetoCliente cliente = new ObjetoCliente();
        PubClub_Cliente_WS webServiceCliente = new PubClub_Cliente_WS();
        ObjetoRetornoEvento retornoWebServiceEvento;
        ObjetoEvento evento;
        ObjetoEstabelecimento estabelecimento;
        PubClub_Estabelecimento_WS webServiceEstabelecimento = new PubClub_Estabelecimento_WS();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["Cliente"] == null)
            {
                Response.Redirect("Login.aspx?Logout=3");
            }
            else
            {
                cliente = webServiceCliente.GetCliente(Convert.ToInt32(Session["Cliente"]));
            }

            BindingList<ObjetoEstabelecimento> listaEstabelecimento = new BindingList<ObjetoEstabelecimento>(webServiceEstabelecimento.ListEstabelecimento());

            if (!Page.IsPostBack)
            {
                foreach (var item in listaEstabelecimento)
                {
                    ListItem itemDaLista = new ListItem();
                    itemDaLista.Value = item.EstabelecimentoId.ToString();
                    itemDaLista.Text = item.NomeFantasia;
                    DropDownListEstabelecimento.Items.Add(itemDaLista);
                }
            }


            if (Request.QueryString["InativarEventoId"] != null)
            {              
               
                    int idEvento = Convert.ToInt32(Request.QueryString["InativarEventoId"]);

                    evento = webServiceEvento.GetEvento(idEvento);

                    int idEstabelecimento = Convert.ToInt32(Request.QueryString["EstabelecimentoId"]);

                    retornoWebServiceEvento = webServiceEvento.UpdateEvento(cliente.ClienteId, idEstabelecimento, evento.Titulo,
                        evento.Descricao, evento.DataHora, evento.Id, false);

                    if (retornoWebServiceEvento.Sucesso == true)
                    {
                        Response.Redirect("ClienteVerMeusEventos.aspx?SucessoInativar=1");
                    }
                    else
                    {
                        LabelAviso.Text = retornoWebServiceEvento.Menssagem;
                        LabelAviso.ForeColor = System.Drawing.Color.Red;
                        LabelAviso.Visible = true;
                    } 
           


            }

            if (Request.QueryString["SucessoInativar"] == "1")
            {
                LabelAviso.Text = "Evento inativado com sucesso.";
                LabelAviso.ForeColor = System.Drawing.Color.Green;
                LabelAviso.Visible = true;

            }

            if (Request.QueryString["DeletarEventoId"] != null)
            {
                int idEvento = Convert.ToInt32(Request.QueryString["DeletarEventoId"]);
                evento = webServiceEvento.GetEvento(idEvento);
                retornoWebServiceEvento = webServiceEvento.DeleteEvento(evento.Id);

                if (retornoWebServiceEvento.Sucesso == true)
                {
                    Response.Redirect("ClienteVerMeusEventos.aspx?SucessoExcluir=1");
                }
                else
                {
                    LabelAviso.Text = retornoWebServiceEvento.Menssagem;
                    LabelAviso.ForeColor = System.Drawing.Color.Red;
                    LabelAviso.Visible = true;
                }
            }

            if (Request.QueryString["SucessoExcluir"] == "1")
            {
                LabelAviso.Text = "Evento excluído com sucesso.";
                LabelAviso.ForeColor = System.Drawing.Color.Green;
                LabelAviso.Visible = true;

            }   

            if (Request.QueryString["EditarEventoId"] != null && Session["SessionEditar"]==null)
            {
                int idEvento = Convert.ToInt32(Request.QueryString["EditarEventoId"]);
                evento = webServiceEvento.GetEvento(idEvento);
                
                textBoxEditTituloDoEvento.Text = evento.Titulo; ;
                textBoxEditDescricaoDoEvento.Text = evento.Descricao;
                textBoxEditDataDoEvento.Text =  evento.DataHora.ToString();
                DropDownListEstabelecimento.SelectedValue = evento.EstabelecimentoId.ToString();

                textBoxEditTituloDoEvento.Visible = true;
                textBoxEditDescricaoDoEvento.Visible = true;
                textBoxEditDataDoEvento.Visible = true;
                DropDownListEstabelecimento.Visible = true;
                ButtonAlterarEvento.Visible = true;
                ButtonCancelar.Visible = true;

                Session["SessionEditar"] = "";
            }

            if (Request.QueryString["SucessoEditar"] == "1")
            {
                LabelAviso.Text = "Evento alterado com sucesso.";
                LabelAviso.ForeColor = System.Drawing.Color.Green;
                LabelAviso.Visible = true;
                Session["SessionEditar"] = null;

            }

            if (Request.QueryString["AtivarEventoId"] != null)
            {

                int idEvento = Convert.ToInt32(Request.QueryString["AtivarEventoId"]);

                evento = webServiceEvento.GetEvento(idEvento);

                int idEstabelecimento = Convert.ToInt32(Request.QueryString["EstabelecimentoId"]);

                retornoWebServiceEvento = webServiceEvento.UpdateEvento(cliente.ClienteId, idEstabelecimento, evento.Titulo,
                    evento.Descricao, evento.DataHora, evento.Id, true);

                if (retornoWebServiceEvento.Sucesso == true)
                {
                    Response.Redirect("ClienteVerMeusEventos.aspx?SucessoAtivar=1");
                }
                else
                {
                    LabelAviso.Text = retornoWebServiceEvento.Menssagem;
                    LabelAviso.ForeColor = System.Drawing.Color.Red;
                    LabelAviso.Visible = true;
                    return;
                }
                

            }

            if (Request.QueryString["SucessoAtivar"] == "1")
            {
                LabelAviso.Text = "Evento ativado com sucesso.";
                LabelAviso.ForeColor = System.Drawing.Color.Green;
                LabelAviso.Visible = true;

            }


            



            listaEvento = webServiceEvento.MeusEventos(cliente.ClienteId, true);

            TableHeaderRow linhaCabecalhoEventos = new TableHeaderRow();

            TableHeaderCell celulaCabecalhoTituloDoEvento = new TableHeaderCell();
            Label labelCabecalhoTituloDoEvento = new Label();

            TableHeaderCell celulaCabecalhoLocalDoEvento = new TableHeaderCell();
            Label labelCabecalhoLocalDoEvento = new Label();

            TableHeaderCell celulaCabecalhoDescricaoDoEvento = new TableHeaderCell();
            Label labelCabecalhoDescricaoDoEvento = new Label();

            TableHeaderCell celulaCabecalhoDataDoEvento = new TableHeaderCell();
            Label labelCabecalhoDataDoEvento = new Label();

            TableHeaderCell celulaCabecalhoStatusDoEvento = new TableHeaderCell();
            Label labelCabecalhoStatusDoEvento = new Label();

            TableHeaderCell celulaCabecalhoAcao = new TableHeaderCell();
            Label labelCabecalhoAcao = new Label();


            labelCabecalhoTituloDoEvento.Text = "Nome do evento";
            celulaCabecalhoTituloDoEvento.Controls.Add(labelCabecalhoTituloDoEvento);
            linhaCabecalhoEventos.Cells.Add(celulaCabecalhoTituloDoEvento);

            labelCabecalhoLocalDoEvento.Text = "Local";
            celulaCabecalhoLocalDoEvento.Controls.Add(labelCabecalhoLocalDoEvento);
            linhaCabecalhoEventos.Cells.Add(celulaCabecalhoLocalDoEvento);

            labelCabecalhoDescricaoDoEvento.Text = "Descrição";
            celulaCabecalhoDescricaoDoEvento.Controls.Add(labelCabecalhoDescricaoDoEvento);
            linhaCabecalhoEventos.Cells.Add(celulaCabecalhoDescricaoDoEvento);

            labelCabecalhoDataDoEvento.Text = "Data";
            celulaCabecalhoDataDoEvento.Controls.Add(labelCabecalhoDataDoEvento);
            linhaCabecalhoEventos.Cells.Add(celulaCabecalhoDataDoEvento);

            labelCabecalhoStatusDoEvento.Text = "Status";
            celulaCabecalhoStatusDoEvento.Controls.Add(labelCabecalhoStatusDoEvento);
            linhaCabecalhoEventos.Cells.Add(celulaCabecalhoStatusDoEvento);

            labelCabecalhoAcao.Text = "Ação";
            celulaCabecalhoAcao.Controls.Add(labelCabecalhoAcao);
            linhaCabecalhoEventos.Cells.Add(celulaCabecalhoAcao);

            tabelaMeusEventons.Rows.Add(linhaCabecalhoEventos);

            if (listaEvento.Count() == 0)
            {
                LabelAviso.Text = "Você não possui nenhum evento ativo.";
                LabelAviso.ForeColor = System.Drawing.Color.Red;
                LabelAviso.Visible = true;
                LabelCount.Visible = false;

            }
            else
            {
                LabelCount.Visible = true;
                tabelaMeusEventons.Visible = true;

                int i = 0;
                foreach (var item in listaEvento)
                {

                    TableRow linhaDadosDoEvento = new TableRow();

                    TableCell celulaNomeDoEvento = new TableCell();
                    Label labelNomeDoEvento = new Label();

                    TableCell celulaLocalDoEvento = new TableCell();
                    Label labelLocalDoEvento = new Label();

                    TableCell celulaDescricaoDoEvento = new TableCell();
                    Label labelDescricaoDoEvento = new Label();

                    TableCell celulaDataDoEvento = new TableCell();
                    Label labelDataDoEvento = new Label();


                    TableCell celulaStatusDoEvento = new TableCell();
                    Label labelStatusDoEvento = new Label();

                    TableCell celulaAcaoDoEvento = new TableCell();

                    ImageButton imageButtonDesativarEvento = new ImageButton();
                    ImageButton imageButtonEditarEvento = new ImageButton();
                    ImageButton imageButtonConvidarAmigos = new ImageButton();
                    ImageButton imageButtonDeletarEvento = new ImageButton();
                    ImageButton imageButtonVerListaDeConvidados = new ImageButton();

                    estabelecimento = webServiceEstabelecimento.GetEstabelecimento(item.EstabelecimentoId);

                    if (i % 2 != 0)
                    {
                        linhaDadosDoEvento.CssClass = "odd";
                    }

                    i++;

                    labelNomeDoEvento.Text = item.Titulo;
                    celulaNomeDoEvento.Controls.Add(labelNomeDoEvento);
                    linhaDadosDoEvento.Cells.Add(celulaNomeDoEvento);

                    labelLocalDoEvento.Text = estabelecimento.NomeFantasia;
                    celulaLocalDoEvento.Controls.Add(labelLocalDoEvento);
                    linhaDadosDoEvento.Cells.Add(celulaLocalDoEvento);

                    labelDescricaoDoEvento.Text = item.Descricao;
                    celulaDescricaoDoEvento.Controls.Add(labelDescricaoDoEvento);
                    linhaDadosDoEvento.Cells.Add(celulaDescricaoDoEvento);

                    labelDataDoEvento.Text = item.DataHora.ToShortDateString();
                    celulaDataDoEvento.Controls.Add(labelDataDoEvento);
                    linhaDadosDoEvento.Cells.Add(celulaDataDoEvento);

                    if (item.Ativa)
                    {
                        labelStatusDoEvento.Text = "Ativo";
                        labelStatusDoEvento.ForeColor = System.Drawing.Color.Green;
                        celulaStatusDoEvento.Controls.Add(labelStatusDoEvento);
                        linhaDadosDoEvento.Cells.Add(celulaStatusDoEvento);
                    }
                    else
                    {
                        labelStatusDoEvento.Text = "Inativo";
                        labelStatusDoEvento.ForeColor = System.Drawing.Color.Red;
                        celulaStatusDoEvento.Controls.Add(labelStatusDoEvento);
                        linhaDadosDoEvento.Cells.Add(celulaStatusDoEvento);

                    }

                    imageButtonDesativarEvento.ImageUrl = "~/Imagens/IconeInativar.png";
                    imageButtonDesativarEvento.ToolTip = "Inativar evento.";                   
                    imageButtonDesativarEvento.PostBackUrl = "~/GUI/ClienteVerMeusEventos.aspx?InativarEventoId=" + item.Id + "&EstabelecimentoId=" + item.EstabelecimentoId;

                    imageButtonEditarEvento.ImageUrl = "~/Imagens/IconeEditar.png";
                    imageButtonEditarEvento.ToolTip = "Alterar evento.";                  
                    imageButtonEditarEvento.PostBackUrl = "~/GUI/ClienteVerMeusEventos.aspx?EditarEventoId=" + item.Id;

                    imageButtonConvidarAmigos.ImageUrl = "~/Imagens/IconeConvidarAmigo.png";
                    imageButtonConvidarAmigos.ToolTip = "Convidar amigos para o evento.";
                    imageButtonConvidarAmigos.PostBackUrl = "~/GUI/ClienteConvidarAmigo.aspx?ConvidarAmigosEventoId=" + item.Id;

                    imageButtonDeletarEvento.ImageUrl = "~/Imagens/IconeDeletar.png";
                    imageButtonDeletarEvento.ToolTip = "Excluir evento.";
                    imageButtonDeletarEvento.PostBackUrl = "~/GUI/ClienteVerMeusEventos.aspx?DeletarEventoId=" + item.Id;

                    imageButtonVerListaDeConvidados.ImageUrl = "~/Imagens/IconeVerListaDeConvidados.png";
                    imageButtonVerListaDeConvidados.ToolTip = "Ver lista de convidados.";
                    imageButtonVerListaDeConvidados.PostBackUrl = "~/GUI/ClienteVerListaDeConvidadosEventos.aspx?VerListaDeConvidadosEventoID=" + item.Id;                    

                    celulaAcaoDoEvento.Controls.Add(imageButtonDesativarEvento);
                    celulaAcaoDoEvento.Controls.Add(imageButtonEditarEvento);
                    celulaAcaoDoEvento.Controls.Add(imageButtonConvidarAmigos);
                    celulaAcaoDoEvento.Controls.Add(imageButtonDeletarEvento);
                    celulaAcaoDoEvento.Controls.Add(imageButtonVerListaDeConvidados);

                    linhaDadosDoEvento.Cells.Add(celulaAcaoDoEvento);

                    tabelaMeusEventons.Rows.Add(linhaDadosDoEvento);

                    LabelCount.Text = "Total de eventos ativos :" + listaEvento.Count();
                    

                }
            }

        }

        protected void ButtonAlterarEvento_Click(object sender, EventArgs e)
        {
            int idEvento = Convert.ToInt32(Request.QueryString["EditarEventoId"]);
            evento = webServiceEvento.GetEvento(idEvento);

            evento.Titulo = textBoxEditTituloDoEvento.Text.Trim();
            evento.Descricao = textBoxEditDescricaoDoEvento.Text.Trim();
            evento.DataHora = Convert.ToDateTime(textBoxEditDataDoEvento.Text);
            evento.EstabelecimentoId = Convert.ToInt32(DropDownListEstabelecimento.SelectedValue.ToString());

            retornoWebServiceEvento = webServiceEvento.UpdateEvento(cliente.ClienteId, evento.EstabelecimentoId, evento.Titulo, evento.Descricao,evento.DataHora, evento.Id, true);
            if (retornoWebServiceEvento.Sucesso == true)
            {
                Response.Redirect("ClienteVerMeusEventos.aspx?SucessoEditar=1");
            }
            else
            {
                LabelAviso.Text = retornoWebServiceEvento.Menssagem;
                LabelAviso.ForeColor = System.Drawing.Color.Red;
                LabelAviso.Visible = true;
            }
        }

        protected void ButtonCancelar_Click(object sender, EventArgs e)
        {
            Session["SessionEditar"] = null;
            Response.Redirect("ClienteVerMeusEventos.aspx");

        }

        protected void CheckBoxInativos_CheckedChanged(object sender, EventArgs e)
        {
            

            if (CheckBoxInativos.Checked == true)
            {
                LabelAviso.Visible = false;
                
                BindingList<ObjetoEvento> listaEventosInativos = new BindingList<ObjetoEvento>(webServiceEvento.MeusEventos(cliente.ClienteId, false));

                if (listaEventosInativos.Count == 0)
                {
                    LabelAviso.Text = "Você não possui eventos inativos.";
                    LabelAviso.ForeColor = System.Drawing.Color.Red;
                    LabelAviso.Visible = true;
                    return;
                }
                else

                    tabelaMeusEventons.Visible = true;
                {
                    LabelAviso.Visible = false;

                    int i = 0;
                    foreach (var item in listaEventosInativos)
                    {

                        TableRow linhaDadosDoEvento = new TableRow();

                        TableCell celulaNomeDoEvento = new TableCell();
                        Label labelNomeDoEvento = new Label();

                        TableCell celulaLocalDoEvento = new TableCell();
                        Label labelLocalDoEvento = new Label();

                        TableCell celulaDescricaoDoEvento = new TableCell();
                        Label labelDescricaoDoEvento = new Label();

                        TableCell celulaDataDoEvento = new TableCell();
                        Label labelDataDoEvento = new Label();

                        TableCell celulaStatusDoEvento = new TableCell();
                        Label labelStatusDoEvento = new Label();

                        TableCell celulaAcaoDoEvento = new TableCell();

                        ImageButton imageButtonAtivarEvento = new ImageButton();                      

                        estabelecimento = webServiceEstabelecimento.GetEstabelecimento(item.EstabelecimentoId);

                        if (i % 2 != 0)
                        {
                            linhaDadosDoEvento.CssClass = "odd";
                        }

                        i++;

                        labelNomeDoEvento.Text = item.Titulo;
                        celulaNomeDoEvento.Controls.Add(labelNomeDoEvento);
                        linhaDadosDoEvento.Cells.Add(celulaNomeDoEvento);

                        labelLocalDoEvento.Text = estabelecimento.NomeFantasia;
                        celulaLocalDoEvento.Controls.Add(labelLocalDoEvento);
                        linhaDadosDoEvento.Cells.Add(celulaLocalDoEvento);

                        labelDescricaoDoEvento.Text = item.Descricao;
                        celulaDescricaoDoEvento.Controls.Add(labelDescricaoDoEvento);
                        linhaDadosDoEvento.Cells.Add(celulaDescricaoDoEvento);

                        labelDataDoEvento.Text = item.DataHora.ToShortDateString();
                        celulaDataDoEvento.Controls.Add(labelDataDoEvento);
                        linhaDadosDoEvento.Cells.Add(celulaDataDoEvento);

                        if (item.Ativa)
                        {
                            labelStatusDoEvento.Text = "Ativo";
                            labelStatusDoEvento.ForeColor = System.Drawing.Color.Green;
                            celulaStatusDoEvento.Controls.Add(labelStatusDoEvento);
                            linhaDadosDoEvento.Cells.Add(celulaStatusDoEvento);
                        }
                        else
                        {
                            labelStatusDoEvento.Text = "Inativo";
                            labelStatusDoEvento.ForeColor = System.Drawing.Color.Red;
                            celulaStatusDoEvento.Controls.Add(labelStatusDoEvento);
                            linhaDadosDoEvento.Cells.Add(celulaStatusDoEvento);

                        }

                        imageButtonAtivarEvento.ImageUrl = "~/Imagens/IconeAtivar.png";
                        imageButtonAtivarEvento.ToolTip = "Ativar evento";                        
                        imageButtonAtivarEvento.PostBackUrl = "~/GUI/ClienteVerMeusEventos.aspx?AtivarEventoId=" + item.Id + "&EstabelecimentoId=" + item.EstabelecimentoId;

                        celulaAcaoDoEvento.Controls.Add(imageButtonAtivarEvento);

                        linhaDadosDoEvento.Cells.Add(celulaAcaoDoEvento);

                        tabelaMeusEventons.Rows.Add(linhaDadosDoEvento);

                        LabelCount.Text = "Total de eventos ativos: " + listaEvento.Count() + "Total de eventos inativos: " + listaEventosInativos.Count();

                    }
                }

            }
            else
            {
                Response.Redirect("ClienteVerMeusEventos.aspx");
            }



        }


    }
}